//indes.js
//引入城市数据
const city = require('../../../utils/city.js')

Page({
  //定义数据
  data: {
    //选中城市
    chooseCity: '--',
    //城市字母
    searchLetter: [],
    //窗口高度
    windowHeight: 0,
    //每个字母高度
    itemLetterHeight: 0,
    //城市数据
    cityList: [],
    //历史纪录
    cityHistory: [],
    //热门城市
    hotCity: [],
    //显示的字母
    showLetter: ''
  },
  //页面加载完成
  onLoad: function () {
    //获取屏幕高度
    const windowHeight = wx.getSystemInfoSync().windowHeight
    //每一个字母的高度
    const itemLetterHeight = (windowHeight - 50) / city.searchLetter.length
    //获取所有访问过的城市
    const cityHistory = wx.getStorageSync('cityHistory')
    //更新数据
    this.setData({
      searchLetter: city.searchLetter,
      windowHeight: windowHeight,
      itemLetterHeight: itemLetterHeight,
      cityList: city.cityList,
      hotCity: city.hotCity,
      //更新选中的城市，如果不存在，则定义默认值
      chooseCity: cityHistory[0] || '--',
      cityHisty: cityHistory
    })
  },
  updateChooseCity: function (e) {
    //缓存this
    const that = this
    //获取点击的城市
    const chooseCity = e.target.dataset.city
    //获取本地存储中，所有点击过的城市
    let cityHistory = wx.getStorageSync('cityHistory') || []
    //当前选中和历史访问第一个相同，则不记录
    if (cityHistory[0] === chooseCity) {
      return
    }
    //当前选中应该是作为第一个成员
    cityHistory.unshift(chooseCity)
    //最多只能存储6个城市
    cityHistory = cityHistory.slice(0, 6)
    //更新本地存储
    wx.setStorage({
      key: 'cityHistory',
      data: cityHistory,
      //存储成功，更新视图
      success: function () {
        //更新数据
        that.setData({
          chooseCity: chooseCity,
          cityHistory: cityHistory
        })
      }
    })
  },
  //点击字母，切换视图
  changeShowLetter: function (e) {
    const letter = e.target.dataset.letter
    this.setData({
      showLetter: letter
    })
  },
  //滑动字母表，切换视图
  letterTouchMove: function (e) {
    //获取手指所在容器元素内的位置
    const pageY = e.touches[0].pageY - 50
    //获取每一个字母的高度
    const itemLetterHeight = this.data.itemLetterHeight
    //包含的字母
    const index = Math.floor(pageY / itemLetterHeight)
    //根据索引获取字母
    const letter = this.data.searchLetter[index]
    //如果当前的letter与showLetter不同的话，再更新
    if (letter && letter !== this.data.showLetter) {
      //更新显示的字母
      this.setData({
        showLetter: letter
      })
    }
  }
})
